package com.hua.controller;


import com.hua.entity.TIduanValue;
import com.hua.entity.Tiduan;

import com.hua.service.TiduanService;
import com.hua.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author smion
 * @since 2022-11-23
 */
@RestController
@RequestMapping("/tiduan")
public class TiduanController {
    @Resource
    private TiduanService tiduanService;



    @ApiOperation(value = "梯段板计算")
    @PostMapping("tiduan")
    public Result tiduan(@RequestBody Tiduan tiduan){
//
        /**
         * 恒荷载数据域
         * 
         */
        //板倾角cosα=1/(1+(hstep/bstep)2)1/2          =1/SQRT(1+(h/b)^2)
        Double cosa = 1/Math.sqrt(1+ (tiduan.getH().doubleValue()/tiduan.getB().doubleValue())*(tiduan.getH().doubleValue()/tiduan.getB().doubleValue()));
        System.out.println("板倾角cosα"+cosa);
        //面层 0.65*(bstep+hstep)/bstep  =(b+h)*0.65/b
        Double M = (tiduan.getB().doubleValue()+tiduan.getH().doubleValue())*0.65/tiduan.getB().doubleValue();
        System.out.println("面层荷载值"+M);
        //踏步 25hstep/2  =0.5*25*h/1000
        Double tb = 0.5*25*tiduan.getH().doubleValue()/1000;
        System.out.println("踏步荷载值"+tb);
        //梯段板厚h=ln/25 (mm)  =l/25
        Double bh = tiduan.getL().doubleValue()/25;
        System.out.println("梯段板厚实际取值h (mm)"+bh);
        //梯段板厚实际取值h (mm)
        //  Long hx = Math.round(bh);
        //斜板 25h/cosα  =bh/1000*25/cosa
        Double xb = bh/1000*25/cosa;
        System.out.println(xb);
        //板底抹灰 0.34/cosα  =0.34/cosa
        Double db =0.34/cosa;
        System.out.println("板底抹灰"+db);
        //栏杆
        Double lg =0.4;
        Double l0 = tiduan.getL().doubleValue()*1.05;
        /**
         *
         */
        //恒荷载标准值gK (KN/m)
        Double gk = M+tb+xb+db+lg;
        System.out.println("恒荷载标准值gK"+gk);
        tiduan.setGk(gk);
        //总荷载设计值p=1.2gK+1.4qK (KN/m)
        Double p =1.2*gk+1.4*tiduan.getQk().doubleValue();
        System.out.println("总荷载设计值"+p);
        tiduan.setP(p);
        //弯矩M=pl02/8 (KN·m)
        Double Mu= p*(l0/1000)*(l0/1000)/8;
        System.out.println("弯矩M"+Mu);
        tiduan.setMu(Mu);

        /**
         * 计算配筋
         */
        //计算有效厚度h0
        if (tiduan.getD().doubleValue()<10){
            Double a=bh-20;
            tiduan.setH0(a);
        }else {
            Double a=bh-15-tiduan.getD().doubleValue()/2;
            tiduan.setH0(a);
        }
        //截面抵抗矩系数αS=M/α1fcbh02
        System.out.println("混凝土强度"+tiduan.getC().doubleValue());
        System.out.println(tiduan.getH0());
        Double as = Mu*1000000/((tiduan.getA1().doubleValue()*tiduan.getFc().doubleValue()*1000*tiduan.getH0().doubleValue()*tiduan.getH0().doubleValue()));

        tiduan.setAse(as);
        System.out.println("截面抵抗矩系数αS="+as);
//
//        /**
//         *
//         */
//
//        γS=(1+(1-2αS)1/2)/2
        Double rs=(1+Math.sqrt(1-2*as));
        tiduan.setRs(rs);
        System.out.println("rs"+rs);
//        钢筋面积AS=M/γSfyh0 (mm2)
        Double As = Mu*1000000/(rs*tiduan.getFy().doubleValue()*tiduan.getH0().doubleValue());
        tiduan.setAsr(As);
        System.out.println("钢筋面积AS"+As);
//        //钢筋实际配筋面积AS (mm2)
        Double AS = 3.14*tiduan.getD().doubleValue()/2*tiduan.getD().doubleValue()/2*1000/tiduan.getS().doubleValue();
        tiduan.setAsm(AS);
        System.out.println("钢筋实际配筋面积AS (mm2)"+AS);

        System.out.println(tiduan);
        tiduanService.save(tiduan);
        return Result.ok(tiduan).message("计算成功");
    }


    /**
     * 查询数据
     */
    @ApiOperation(value = "查询数据")
    @GetMapping("list")
    public Result list(){
       List list =tiduanService.list();
       System.out.println(list);
       return Result.ok(list).message("查询成功");
    }
}

